// 八、枚举

// 1.数字枚举
// const test = 1
// const getIndex = ()=>{
//   return 2
// }
// enum Status {
//   Uploading = 3,
//   Success = test,
//   Failed = getIndex()
// }
// console.log(Status.Uploading)
// console.log(Status['Success']);
// console.log(Status.Failed)

// 2.反向映射

// console.log(Status);

// 3.字符串枚举

// enum Message{
//   Error = 'Sorry,error',
//   Success = 'Hoho,success',
//   Failed = Error,
// }
// console.log(Message.Success);

// 4.异构枚举 既包含数字值，又包含字符串值  不建议使用

// enum Result{
//   Failed = 0,
//   Success = 'success'
// }

// 5.枚举成员类型和联合枚举类型

// (1).不带初始值的枚举成员

// enum E {A}

// (2).值为字符串字面量

// enum E {A = 'a'}

// (3).值为数值字面量或带有负号

// enum E {A = -1}

// 符合三个条件中的一个
// -------- //
// 枚举成员类型
enum Animals {
  Dog = 1,
  Cat = 2,
}
interface Dog {
  type: Animals.Dog
}
const dog: Dog = {
  type: Animals.Dog
}

// 联合枚举类型

enum Status {
  On, Off
}
interface Light {
  status: Status
}
const light: Light = {
  status: Status.On
}


// 6.运行时的枚举

// 例如，在一个延时器，使用Status

// 7.const enum

// 把枚举值编译成js对象
